The present invention relates generally to computer systems and, more particularly, to systems and techniques for assisting a user of a computer system.
With the advent of the personal computer, the use of computer systems is becoming increasingly prevalent in everyday life. In the past, computers were often housed in highly restricted areas, with access limited to a few computer scientists and programmers. Today, however, computers can be seen on the desktops of most business professionals. Running software applications such as word processors and spreadsheets, for example, even the average business professional can realize substantial productivity gains. Besides the business environment, computers can also be found in wide use both at home and at school.
The typical user of a computer today has little or no training in the computer sciences or even in the basic use of a personal computer. In order to operate a computer effectively, however, he or she must overcome a steep learning curve, one requiring mastery of a number of commands and data formats. One approach to this problem is to spend hours laboring over often-cryptic user manuals--, an unattractive option at best. Instead, most users usually abandon printed manuals in favor of trial-and-error learning.
To increase ease of use, designers of computer systems have labored for decades to create architectures which are intuitive. Most of this effort has been centered around the user interface or UI--the means by which a user communicates (i.e., supplies input and receives output) with a computer. With increasingly widespread availability of powerful microprocessors, graphical user interfaces (GUIs, pronounced "gooeys") have become feasible.
A GUI is a type of display format that enables a user to operate a computer by pointing to pictorial representations, such as "windows" and "icons" (bitmaps), displayed on a screen device. A window is a rectangle displayed on the screen that affords a user workspace within a program. In typical operation, the user may move the window about on the screen, change its size or shape, enlarge it to fill the screen, close it entirely, or change how much of its contents are displayed. To aid the user in the manipulation of its contents, a window will typically include a number of user interface components, such as buttons, menus, sliders, and the like. Outside the window, the screen can display other screen objects, such as other windows, disk drive icons, or even a trash can icon.
To navigate within a GUI, most systems employ a screen cursor or pointer, typically displayed as a small arrow icon (bitmap) which allows the user to select individual points on the screen. In operation, the screen cursor is moved to a desired screen location in response to movements of a pointing device (e.g., mouse) by the user. Besides effecting cursor movement, most pointing devices include one or more switches or "mouse buttons" for specifying additional user input or "user events." Since many user choices may be entered through use of a pointing device (e.g., for selecting screen objects), instead of input with a keyboard, the need for the user to memorize special commands has been lessened.
Most GUIs feature a menu bar. For instance, running across the top of the screen which serves to group or categorize commands available to the user. Clicking on an item on the menu bar typically causes a "pull-down" menu to appear. This second or "submenu" also includes a number of items, each of which is associated with a desired action, including the display of even more menus. To select a desired action, the user usually clicks the corresponding menu item with the screen or mouse pointer. For some menu items, particularly those which may be nested in several layers deep, a keyboard equivalent or "hot key" may be available but, unfortunately, these must also be memorized by the user.
With well-known examples including Apple's Macintosh (Mac) interface, Microsoft's Windows, and IBM's OS/2 Presentation Manager, these interfaces simplify computer operation by providing users with a more-or-less consistent interface across applications. Nevertheless, most application software still requires complex user actions, such as "double-clicking" or "dragging" a mouse device while a key is held down. Thus, there typically exists a plethora of ways to do almost anything in a graphical interface, such as the Mac. While this increases the flexibility of a system, it also adds to the complexity of the interface that the user must master. And this problem is by no means limited just to novice users. Experienced computer users are reluctant to read user manuals and, hence, often fair no better than novice users. All told, the user is still required to memorize special commands.
Standard windowing interfaces depend heavily on a clunky system of pull-down menus. While pull-down menus are an improvement over command-line (e.g., MS-DOS) interfaces, they are non-metaphoric or non-analogous to ordinary objects, i.e., ones familiar to the user. Perhaps the biggest weakness of pull-down menus is the requirement that the user must know beforehand which menu contains the item or function of interest. If the user does not know which pull-down menu, submenu, or dialog box contains the item he or she is seeking, the user will spend an inordinate amount of time checking the contents of each in an effort to hunt down the needed item. And often the search is in vain. Moreover, since functions for a given object (e.g., text object) are often scattered over several disparate menus, the user is discouraged from interacting and experimenting with the object. Thus, many prior art windowing GUIs are no more intuitive or useful to the user than other menuing systems.
One approach to overcoming this problem has been the implementation of "smart icons." This interface technique employs screen buttons painted with icons which are supposed to tell the user what the buttons do. This approach, however, makes the interface problem even-worse because the meaning of the individual buttons is often not easily grasped. For instance, some button images are so small or so numerous that it is hard to see the icons well enough to discern what they mean. Thus, the approach is frequently no more helpful than hiding the desired function deep inside a menuing system. Thus, with advances in computer and software technology, application software has not necessarily become easier to use. Instead, technological advances have been largely employed to build more complex functions into existing applications, often resulting in a complicated user interface, such as a staggering array of icons, which leave the user even more bewildered.
The present invention recognizes that it is highly desirable to provide computers with system and application software which is highly intuitive to users, including those who are untrained in the use of the software. What is needed is a system and interface methods which require little or no knowledge of specific commands by the user. Moreover, such methods should not "invade" the user screen workspace (client area), that is, they should operate in a non-intrusive fashion. The present invention fulfills this and other needs.